package effective.java.item34;

public enum OrderStatus {
    PENDING {
        @Override
        public void process(Order order) {
            this.sendReminderEmail(order);
        }
    },
    PROCESSING {
        @Override
        public void process(Order order) {
            this.sendReminderEmail(order);
            // 可能还有一些其他处理逻辑
        }
    },
    COMPLETED {
        @Override
        public void process(Order order) {
            // 完成订单的特殊处理逻辑
        }
    };

    // 抽象方法定义共享行为
    public abstract void process(Order order);

    // 共享的行为实现
    public void sendReminderEmail(Order order) {
        System.out.println("发送订单提醒邮件给客户，订单号：" + order.getOrderNumber());
    }

    // 示例Order类

    public static void main(String[] args) {
        Order order = new Order("ORDER12345");
        OrderStatus.PENDING.process(order); // 将调用sendReminderEmail方法
    }
}

